'''
解题思路

这道题目相对难度不大。理解一下题目思路就是找到大于引用量N的论文不少于N篇，找到该临界值。
面对这种问题，我们第一步便是需要统计不同引用量的论文分别有多少。
第二件事便是做排序，这样方便我们统计。
最后便是遍历，从高处索引，找到min(大于引用量N, 不少于N篇)，即为结果

'''


class Solution:
    def hIndex(self, citations: List[int]) -> int:
        cite = {}
        for i in citations:
            if i in cite:
                cite[i] += 1
            else:
                cite[i] = 1
        
        cite = sorted(cite.items(), key=lambda x: x[0], reverse=True)

        res = 0
        ans = 0
        for i in range(len(cite)):
            if cite[i][0] > res:
                res += cite[i][1]
                ans = min(cite[i][0], res)
            else:
                break
        return ans